package me.zhengjie.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Integer工具类
 */
public class IntegerUtil {

    /**
     * 符号 * :匹配零位或者多位的数字，如果是空串也会匹配
     * 符号 ^ :从字符串开始位置匹配
     * 符号 $ :从字符串结束位置开始匹配
     */
    private static final String NUMBER_PATTERN = "^[0-9]*$";

    /**
     * 判断字符串{@code value}是否是数字
     *
     * @param value 字符串
     * @return 如果是字符串 返回true,如果字符串是null或者是空的返回false
     */
    public static boolean isInteger(String value) {
        if (StringUtil.isNullOrEmpty(value)) {
            return false;
        }
        Pattern pattern = Pattern.compile(NUMBER_PATTERN);
        Matcher matcher = pattern.matcher(value);
        return matcher.matches();
    }

    public static Integer valueOf(String str) {
        return valueOf(str, null);
    }

    public static Integer valueOf(Object obj) {
        if (obj == null) {
            return null;
        }
        return valueOf(obj.toString());
    }

    /**
     * 将字符串转为Integer 类型
     *
     * @param str          字符串
     * @param defaultValue 默认值
     * @return 返回{@code Integer} 转换结果
     * @apiNote 空串不设置默认值则转为null
     */
    public static Integer valueOf(String str, Integer defaultValue) {
        if (str == null || str.isEmpty()) {
            return defaultValue;
        }
        try {
            return Float.valueOf(str).intValue();
        } catch (NumberFormatException e) {
            return defaultValue;
        }
    }

    public static boolean compare(String left, String right) {
        return valueOf(left, null) - valueOf(right, null) > 0;
    }

}
